package com.xuecheng.manage_cms.service;

import com.xuecheng.framework.domain.cms.CmsPage;
import com.xuecheng.framework.domain.cms.request.QueryPageRequest;
import com.xuecheng.framework.domain.cms.response.CmsPageResult;
import com.xuecheng.framework.domain.cms.response.CmsPostPageResult;
import com.xuecheng.framework.model.response.QueryResponseResult;
import com.xuecheng.framework.model.response.ResponseResult;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;

public interface CmsPageService {
    /**
     * 分页查询CmsPage
     *
     * @param page             从第一页开始，但是传递给dao必须-1，数据库第0页才算是第一页
     * @param size             每一页显示的个数
     * @param queryPageRequest 前台传过来的条件查询参数的实体类
     * @return 查询出的结果封装成统一返回对象
     */
    QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest);

    /**
     * 添加一个CmsPage
     *
     * @param cmsPage 前端传入CmsPage对象
     * @return CmsPageResult 返回新增的CmsPage和操作状态
     */
    CmsPageResult addCmsPage(CmsPage cmsPage);

    /**
     * 添加一个CmsPage,主要给课程管理预览的时候远程调用
     *
     * @param cmsPage 前端传入CmsPage对象
     * @return CmsPageResult 返回新增的CmsPage和操作状态
     */
    CmsPageResult saveCmsPage(CmsPage cmsPage);
    /**
     * 修改CmsPage页面
     *
     * @param id      CmsPage的ID
     * @param cmsPage 前台传入的CmsPage对象
     * @return 修改后的CmsPage和状态码
     */
     CmsPageResult update(String id, CmsPage cmsPage);

    /**
     * 根据页面Id查询一个CmsPge
     *
     * @param pageId 页面id
     * @return 一个CmsPage对象
     */
     CmsPage findById(String pageId);

    /**
     * 保存一个cmsPage
     * @param cmsPage 需要保存的cmsPage
     * @return 保存过后的cmsPage
     */
     CmsPage save(CmsPage cmsPage);
    /**
     * 根据id删除CmsPage
     *
     * @param pageId 前台传递CmsPage的id
     * @return 响应结果
     */
    ResponseResult delete(String pageId);

    /**
     * 页面静态化方法
     * @param pageId 页面id
     * @return 返回页面静态化后字符串
     */
    String getPageHtml(String pageId);

    /**
     * 页面发布接口
     * @param pageId 页面id
     * @return 响应
     */
    ResponseResult postPage(String pageId);

    /**
     * 一键发布Cms页面,给课程发布的时候调用调用
     *
     * @param cmsPage 需要发布的页面
     */
    CmsPostPageResult postPageQuick(CmsPage cmsPage);
}
